package com.broada.apm.dao;

import java.util.List;

import com.broada.apm.model.ApplicationSystem;

public interface ApplicationDao {
	/**
	 * 添加应用系统
	 * @param application
	 */
	public void addApplication(ApplicationSystem application);
	
	/**
	 * 更新应用系统
	 * @param application
	 */
	public void updateApplication(ApplicationSystem application);
	
	/**
	 * 更新应用系统及关系
	 * @param application
	 */
	public void updateApplicationWithRelation(ApplicationSystem application);
	
	/**
	 * 删除应用系统
	 * @param application
	 */
	public void deleteApplication(ApplicationSystem application);
	
	/**
	 * 查询所有应用系统
	 * @return
	 */
	public List<ApplicationSystem> getAllApplications();
	
	/**
	 * 根据应用系统id查询
	 * @param appId
	 * @return
	 */
	public ApplicationSystem getApplicationById(String appId);

	/**
	 * 查询应用系统关联服务节点和节点关系
	 * @param appId
	 * @return
	 */
	public ApplicationSystem getApplicationWithServiceAndRelById(String appId);

	/**
	 * 根据应用系统名称查询应用系统
	 * @param appName
	 * @return
	 */
	public ApplicationSystem getApplicationByName(String appName);

	/**
	 * 根据条件查询应用系统
	 * @param application
	 * @return
	 */
	public List<ApplicationSystem> getApplicationByCondition(ApplicationSystem application);

	/**
	 * 保存应用系统上所有的应用系统
	 * @param appIds
	 */
	public void saveAppsInOverview(List<String> appIds);

	/**
	 * 根据应用系统名称查询应用系统
	 * @param appNames
	 * @return
	 */
	public List<ApplicationSystem> getApplicationsByNames(String[] appNames);

	/**
	 * 根据应用系统id查找应用系统
	 * @param appIds
	 * @return
	 */
	public List<ApplicationSystem> getApplicationsByIds(String[] appIds);

}
